package trastienda.web;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import junit.framework.Assert;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Categoria;
import trastienda.modelo.Usuario;
import trastienda.service.CategoriaService;

@Controller
public class CategoriaController {
	
	@Autowired
	CategoriaService categoriaService;
	
	public void setCategoriaService(CategoriaService categoriaService) {
		this.categoriaService = categoriaService;
	}

	@RequestMapping(value = "/index", method = RequestMethod.GET)	
	protected ModelAndView inicio(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		return new ModelAndView("listarCategoria");
	}	
	
	@RequestMapping(value = "/cargar_usuarios_agregar_rol")	
	public ModelAndView cargarUsuarioAgregarRol(HttpServletRequest request,
			HttpServletResponse response) {

		return new ModelAndView("/usuario_agregar_rol");
	}

	@RequestMapping(value = "/usuario_agregar_rol")	
	public ModelAndView agregarCategoria(HttpServletRequest request, HttpServletResponse response) {
		
		Usuario uvo = new Usuario();
		uvo.setIdUsuario(request.getParameter("idUsuario"));
		
		Categoria cvo = new Categoria();
		cvo.setNombre(request.getParameter("nombre"));
		cvo.setDescripcion(request.getParameter("descripcion"));
	
		try {
			categoriaService.insertar(cvo.getNombre(), cvo.getDescripcion());
		} catch (DAOExcepcion e) {
			return new ModelAndView("/error", "mensaje", e.getMessage());
		}		

		return new ModelAndView("redirect: listar_categorias.html");
	}
	
	

	@RequestMapping(value = "/usuario_agregar_rol")	
	public ModelAndView editarCategoria(HttpServletRequest request, HttpServletResponse response) {
		
		//TRAEMOS LOS PARAMETROS
		Categoria cvo = new Categoria();
		cvo.setNombre(request.getParameter("nombre"));
		cvo.setDescripcion(request.getParameter("descripcion"));

		try {
			categoriaService.actualizar(cvo.getNombre(),cvo.getDescripcion());
		} catch (DAOExcepcion e) {
			Assert.fail("Error:" + e.getMessage());
		}
		return new ModelAndView("redirect: listar_categorias.html");
	}
	
	
	//FALTA MODIFICAR ESTA PANTALLA
	@RequestMapping(value = "/usuario_agregar_rol")	
	public ModelAndView listarCategoria(HttpServletRequest request, HttpServletResponse response) {
	
		try {
			Collection<Categoria> categorias = categoriaService.listarTodos();
			for (Categoria cat : categorias) {
				System.out.println(cat.getNombre());
			
			}
		} catch (DAOExcepcion e) {
			Assert.fail("Error:" + e.getMessage());
		}
		return new ModelAndView("redirect: listar_categorias.html");
	}
		
	
	
}
